/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package menu;

import java.awt.Color;
import java.awt.Component;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import principalcontrole.principal;
import utilitario.Arquivo;
import utilitario.Cartao;
import utilitario.Cheque;
import utilitario.Cliente;
import utilitario.NotaFiscal;
import utilitario.busca;
import utilitario.cad_produto;
import utilitario.juros;
import utilitario.lucro;
import utilitario.pedido_compra_cliente;
import utilitario.vendidos;

/**
 *
 * @author rodrig0
 */
public class caixa extends javax.swing.JFrame {

    //data do sistema
    public Calendar dataCalendar = Calendar.getInstance();
    public String dataString = dataCalendar.get(Calendar.DAY_OF_MONTH) + "/" + (dataCalendar.get(Calendar.MONTH) + 1) + "/" + dataCalendar.get(Calendar.YEAR);
    public int[] numeroParcelas = new int[2];
    public NotaFiscal notaAtual;
    public Object infoFormaPagmento;
    public juros ler_juros;

    //posição do pedido na lista
    public int posicaoCompra = -1;

    //listas
    public static ArrayList<pedido_compra_cliente> listaCompras = new ArrayList<>();
    public static ArrayList<NotaFiscal> listaNotaFiscal = new ArrayList<>();
    public static ArrayList<Cliente> listaClientes = new ArrayList<>();
    public static ArrayList<cad_produto> estoque = new ArrayList<>();
    public static ArrayList<lucro> listaLucro = new ArrayList<>();
    principal p;
    /**
     * Creates new form caixa
     */

    public caixa(principal p){
        this();
        this.p = p;

    }
    public caixa() {
        initComponents();

        //limitando campos de textos
        txtCodigoCompra.setDocument(new CampoDeTexto.apenasNumeros());
        txtDinheiroRecebido.setDocument(new CampoDeTexto.apenasNumerosPonto());
        txtCequeValor.setDocument(new CampoDeTexto.apenasNumerosPonto());
        txtChequeCMC7.setDocument(new CampoDeTexto.apenasNumeros());
        txtCarttaoCreditoOperadora.setDocument(new CampoDeTexto.apenasMaiusculas());
        txtCartaoDebitoOperadora.setDocument(new CampoDeTexto.apenasMaiusculas());
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pnlPrincipal = new javax.swing.JPanel();
        pnlTitulo = new javax.swing.JPanel();
        lblTitulo = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        txtCodigoCompra = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        rbCartaoCredito = new javax.swing.JRadioButton();
        rbCartaoDebito = new javax.swing.JRadioButton();
        rbDinheiro = new javax.swing.JRadioButton();
        rbCheque = new javax.swing.JRadioButton();
        pnlCartaoCredito = new javax.swing.JPanel();
        jLabel9 = new javax.swing.JLabel();
        cboxCartaoCreditoParcelas = new javax.swing.JComboBox();
        jScrollPane1 = new javax.swing.JScrollPane();
        lblCartaoCreditoParcelas = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        txtCarttaoCreditoOperadora = new javax.swing.JTextField();
        jLabel13 = new javax.swing.JLabel();
        calCartaoCreditoData = new com.toedter.calendar.JDateChooser();
        pnlCheque = new javax.swing.JPanel();
        jLabel5 = new javax.swing.JLabel();
        pnlChequeParcelas = new javax.swing.JScrollPane();
        lblChequeTabelaParcelas = new javax.swing.JLabel();
        txtCequeValor = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        txtChequeCMC7 = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        calChequeDataDeposito = new com.toedter.calendar.JDateChooser();
        jLabel8 = new javax.swing.JLabel();
        cboxChequeParcelas = new javax.swing.JComboBox();
        pnlCartaoDebito = new javax.swing.JPanel();
        jLabel10 = new javax.swing.JLabel();
        txtCartaoDebitoOperadora = new javax.swing.JTextField();
        jLabel11 = new javax.swing.JLabel();
        calCartaoDebitoDataRecebimento = new com.toedter.calendar.JDateChooser();
        jLabel14 = new javax.swing.JLabel();
        txtCartaoDebitoValor = new javax.swing.JTextField();
        pnlDinheiro = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        txtDinheiroRecebido = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        lblDinheiroTroco = new javax.swing.JLabel();
        pnlNotaFiscal = new javax.swing.JScrollPane();
        lblClienteInfo = new javax.swing.JLabel();
        btnVerificarCodigoCompra = new javax.swing.JButton();
        btnFinalizarCompra = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Caixa");
        setMinimumSize(new java.awt.Dimension(1036, 785));
        setType(java.awt.Window.Type.POPUP);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });
        getContentPane().setLayout(null);

        pnlPrincipal.setBackground(new java.awt.Color(230, 230, 230));
        pnlPrincipal.setLayout(null);

        pnlTitulo.setBackground(new java.awt.Color(51, 153, 255));
        pnlTitulo.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        lblTitulo.setFont(new java.awt.Font("Myriad Pro", 1, 44)); // NOI18N
        lblTitulo.setForeground(new java.awt.Color(255, 255, 255));
        lblTitulo.setText("Caixa");
        lblTitulo.setToolTipText("");

        javax.swing.GroupLayout pnlTituloLayout = new javax.swing.GroupLayout(pnlTitulo);
        pnlTitulo.setLayout(pnlTituloLayout);
        pnlTituloLayout.setHorizontalGroup(
            pnlTituloLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlTituloLayout.createSequentialGroup()
                .addGap(379, 379, 379)
                .addComponent(lblTitulo)
                .addContainerGap(537, Short.MAX_VALUE))
        );
        pnlTituloLayout.setVerticalGroup(
            pnlTituloLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlTituloLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblTitulo, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)
                .addContainerGap())
        );

        pnlPrincipal.add(pnlTitulo);
        pnlTitulo.setBounds(0, 0, 1030, 80);

        jLabel2.setText("Código da Compra:");
        pnlPrincipal.add(jLabel2);
        jLabel2.setBounds(50, 160, 92, 14);
        pnlPrincipal.add(txtCodigoCompra);
        txtCodigoCompra.setBounds(20, 180, 150, 28);

        jLabel3.setText("Formas de Pagamento");
        pnlPrincipal.add(jLabel3);
        jLabel3.setBounds(34, 363, 107, 14);

        rbCartaoCredito.setText("Cartão de Crédito");
        rbCartaoCredito.setName("Cartao de Credito"); // NOI18N
        rbCartaoCredito.setEnabled(false);
        rbCartaoCredito.setOpaque(false);
        rbCartaoCredito.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbCartaoCreditoActionPerformed(evt);
            }
        });
        pnlPrincipal.add(rbCartaoCredito);
        rbCartaoCredito.setBounds(34, 384, 120, 23);

        rbCartaoDebito.setText("Cartão de Débito");
        rbCartaoDebito.setName("Cartao de Debito"); // NOI18N
        rbCartaoDebito.setEnabled(false);
        rbCartaoDebito.setOpaque(false);
        rbCartaoDebito.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbCartaoDebitoActionPerformed(evt);
            }
        });
        pnlPrincipal.add(rbCartaoDebito);
        rbCartaoDebito.setBounds(160, 384, 120, 23);

        rbDinheiro.setText("Dinheiro");
        rbDinheiro.setName("Dinheiro"); // NOI18N
        rbDinheiro.setEnabled(false);
        rbDinheiro.setOpaque(false);
        rbDinheiro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbDinheiroActionPerformed(evt);
            }
        });
        pnlPrincipal.add(rbDinheiro);
        rbDinheiro.setBounds(280, 384, 70, 23);

        rbCheque.setText("Cheque");
        rbCheque.setName("Cheque"); // NOI18N
        rbCheque.setEnabled(false);
        rbCheque.setOpaque(false);
        rbCheque.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbChequeActionPerformed(evt);
            }
        });
        pnlPrincipal.add(rbCheque);
        rbCheque.setBounds(350, 384, 70, 23);

        pnlCartaoCredito.setVisible(false);
        pnlCartaoCredito.setEnabled(false);
        pnlCartaoCredito.setBackground(new java.awt.Color(255, 255, 255));
        pnlCartaoCredito.setName("painelCartaoCredito"); // NOI18N

        jLabel9.setText("Parcelas:");

        lblCartaoCreditoParcelas.setText("HTML COM TABELA DE PARCELAS");
        jScrollPane1.setViewportView(lblCartaoCreditoParcelas);

        jLabel12.setText("Operadora:");

        jLabel13.setText("Data de Recebimento:");

        javax.swing.GroupLayout pnlCartaoCreditoLayout = new javax.swing.GroupLayout(pnlCartaoCredito);
        pnlCartaoCredito.setLayout(pnlCartaoCreditoLayout);
        pnlCartaoCreditoLayout.setHorizontalGroup(
            pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlCartaoCreditoLayout.createSequentialGroup()
                .addGap(24, 24, 24)
                .addGroup(pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlCartaoCreditoLayout.createSequentialGroup()
                        .addGroup(pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel12)
                            .addComponent(txtCarttaoCreditoOperadora, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel9)
                            .addComponent(cboxCartaoCreditoParcelas, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(43, 43, 43))
                    .addGroup(pnlCartaoCreditoLayout.createSequentialGroup()
                        .addGroup(pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel13)
                            .addComponent(calCartaoCreditoData, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(42, 42, 42))
        );
        pnlCartaoCreditoLayout.setVerticalGroup(
            pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlCartaoCreditoLayout.createSequentialGroup()
                .addGap(40, 40, 40)
                .addGroup(pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(pnlCartaoCreditoLayout.createSequentialGroup()
                        .addGroup(pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel9)
                            .addComponent(jLabel12))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlCartaoCreditoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(cboxCartaoCreditoParcelas, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtCarttaoCreditoOperadora, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addComponent(jLabel13)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(calCartaoCreditoData, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pnlPrincipal.add(pnlCartaoCredito);
        pnlCartaoCredito.setBounds(40, 430, 150, 30);

        pnlCheque.setVisible(false);
        pnlCheque.setEnabled(false);
        pnlCheque.setBackground(new java.awt.Color(255, 255, 255));
        pnlCheque.setName("painelCheque"); // NOI18N

        jLabel5.setText("Valor Do Cehque:");

        pnlChequeParcelas.setBackground(new java.awt.Color(255, 255, 255));

        lblChequeTabelaParcelas.setText("HTML COM PARCELAS DO CHEQUE");
        pnlChequeParcelas.setViewportView(lblChequeTabelaParcelas);

        jLabel6.setText("CMC7:");

        jLabel7.setText("Data de Depósito:");

        jLabel8.setText("Numero de Parcelas:");

        javax.swing.GroupLayout pnlChequeLayout = new javax.swing.GroupLayout(pnlCheque);
        pnlCheque.setLayout(pnlChequeLayout);
        pnlChequeLayout.setHorizontalGroup(
            pnlChequeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlChequeLayout.createSequentialGroup()
                .addGap(23, 23, 23)
                .addGroup(pnlChequeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlChequeLayout.createSequentialGroup()
                        .addComponent(jLabel5)
                        .addGap(139, 139, 139)
                        .addComponent(jLabel8))
                    .addComponent(jLabel6)
                    .addComponent(txtChequeCMC7, javax.swing.GroupLayout.PREFERRED_SIZE, 324, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel7)
                    .addComponent(calChequeDataDeposito, javax.swing.GroupLayout.PREFERRED_SIZE, 227, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(pnlChequeLayout.createSequentialGroup()
                        .addComponent(txtCequeValor, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(51, 51, 51)
                        .addComponent(cboxChequeParcelas, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(pnlChequeParcelas, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(20, 20, 20))
        );
        pnlChequeLayout.setVerticalGroup(
            pnlChequeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlChequeLayout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addGroup(pnlChequeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlChequeLayout.createSequentialGroup()
                        .addGroup(pnlChequeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel5)
                            .addComponent(jLabel8))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlChequeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtCequeValor, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(cboxChequeParcelas, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addComponent(jLabel6)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtChequeCMC7, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jLabel7)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(calChequeDataDeposito, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(pnlChequeParcelas, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pnlPrincipal.add(pnlCheque);
        pnlCheque.setBounds(30, 550, 160, 30);

        pnlCartaoDebito.setVisible(false);
        pnlCartaoCredito.setEnabled(false);
        pnlCartaoDebito.setBackground(new java.awt.Color(255, 255, 255));
        pnlCartaoDebito.setName("painelCartaoDebito"); // NOI18N

        jLabel10.setText("Operadora:");

        jLabel11.setText("Data do Recebimento:");

        calCartaoDebitoDataRecebimento.setDateFormatString("dd/MM/YYYY");
        calCartaoDebitoDataRecebimento.setName("Calendario"); // NOI18N

        jLabel14.setText("Valor Total:");

        txtCartaoDebitoValor.setEditable(false);

        javax.swing.GroupLayout pnlCartaoDebitoLayout = new javax.swing.GroupLayout(pnlCartaoDebito);
        pnlCartaoDebito.setLayout(pnlCartaoDebitoLayout);
        pnlCartaoDebitoLayout.setHorizontalGroup(
            pnlCartaoDebitoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlCartaoDebitoLayout.createSequentialGroup()
                .addGap(18, 18, 18)
                .addGroup(pnlCartaoDebitoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtCartaoDebitoValor, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel14)
                    .addComponent(jLabel11)
                    .addComponent(jLabel10)
                    .addComponent(txtCartaoDebitoOperadora, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(calCartaoDebitoDataRecebimento, javax.swing.GroupLayout.PREFERRED_SIZE, 194, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(548, Short.MAX_VALUE))
        );
        pnlCartaoDebitoLayout.setVerticalGroup(
            pnlCartaoDebitoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlCartaoDebitoLayout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addComponent(jLabel10)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtCartaoDebitoOperadora, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabel11)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(calCartaoDebitoDataRecebimento, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabel14)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtCartaoDebitoValor, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pnlPrincipal.add(pnlCartaoDebito);
        pnlCartaoDebito.setBounds(230, 440, 760, 200);

        pnlDinheiro.setVisible(false);
        pnlDinheiro.setEnabled(false);
        pnlDinheiro.setBackground(new java.awt.Color(255, 255, 255));
        pnlDinheiro.setName("painelDinheiro"); // NOI18N

        jLabel1.setText("Quantidade Recebida:");

        txtDinheiroRecebido.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txtDinheiroRecebidoKeyPressed(evt);
            }
        });

        jLabel4.setText("Troco:");

        lblDinheiroTroco.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        lblDinheiroTroco.setForeground(new java.awt.Color(204, 0, 0));
        lblDinheiroTroco.setText("jLabel5");
        lblDinheiroTroco.setVisible(false);

        javax.swing.GroupLayout pnlDinheiroLayout = new javax.swing.GroupLayout(pnlDinheiro);
        pnlDinheiro.setLayout(pnlDinheiroLayout);
        pnlDinheiroLayout.setHorizontalGroup(
            pnlDinheiroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDinheiroLayout.createSequentialGroup()
                .addGap(46, 46, 46)
                .addGroup(pnlDinheiroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblDinheiroTroco)
                    .addComponent(jLabel4)
                    .addComponent(jLabel1)
                    .addComponent(txtDinheiroRecebido, javax.swing.GroupLayout.PREFERRED_SIZE, 205, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pnlDinheiroLayout.setVerticalGroup(
            pnlDinheiroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDinheiroLayout.createSequentialGroup()
                .addGap(32, 32, 32)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtDinheiroRecebido, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(38, 38, 38)
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(lblDinheiroTroco)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pnlPrincipal.add(pnlDinheiro);
        pnlDinheiro.setBounds(30, 500, 160, 30);

        pnlNotaFiscal.setVisible(false);
        pnlNotaFiscal.setEnabled(false);
        pnlNotaFiscal.setBackground(new java.awt.Color(255, 255, 255));

        lblClienteInfo.setBackground(new java.awt.Color(255, 255, 255));
        lblClienteInfo.setText("HTML COM NOTA FISCAL");
        pnlNotaFiscal.setViewportView(lblClienteInfo);

        pnlPrincipal.add(pnlNotaFiscal);
        pnlNotaFiscal.setBounds(220, 150, 760, 160);

        btnVerificarCodigoCompra.setText("Verificar");
        btnVerificarCodigoCompra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnVerificarCodigoCompraActionPerformed(evt);
            }
        });
        pnlPrincipal.add(btnVerificarCodigoCompra);
        btnVerificarCodigoCompra.setBounds(60, 220, 80, 27);

        btnFinalizarCompra.setText("Finalizar Venda");
        btnFinalizarCompra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnFinalizarCompraActionPerformed(evt);
            }
        });
        pnlPrincipal.add(btnFinalizarCompra);
        btnFinalizarCompra.setBounds(280, 690, 160, 27);

        getContentPane().add(pnlPrincipal);
        pnlPrincipal.setBounds(0, 0, 1024, 768);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void rbCartaoCreditoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbCartaoCreditoActionPerformed
        if (rbCartaoCredito.isSelected()) {
            resetBotaoRadio(rbCartaoCredito.getName());
            resetPainel(pnlCartaoCredito.getName(), true);

        } else {
            resetPainel("EU", false);
        }

    }//GEN-LAST:event_rbCartaoCreditoActionPerformed

    private void rbCartaoDebitoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbCartaoDebitoActionPerformed
        if (rbCartaoDebito.isSelected()) {
            resetBotaoRadio(rbCartaoDebito.getName());
            resetPainel(pnlCartaoDebito.getName(), true);
            txtCartaoDebitoValor.setText(listaCompras.get(posicaoCompra).getValor_total() + "");
        } else {
            resetPainel(pnlCartaoDebito.getName(), false);
        }
    }//GEN-LAST:event_rbCartaoDebitoActionPerformed

    private void rbDinheiroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbDinheiroActionPerformed
        if (rbDinheiro.isSelected()) {
            resetBotaoRadio(rbDinheiro.getName());
            resetPainel(pnlDinheiro.getName(), true);
        } else {
            resetPainel(pnlDinheiro.getName(), false);
        }
    }//GEN-LAST:event_rbDinheiroActionPerformed

    private void rbChequeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbChequeActionPerformed
        if (rbCheque.isSelected()) {
            resetBotaoRadio(rbCheque.getName());
            resetPainel(pnlCheque.getName(), true);
        } else {
            resetPainel(pnlCheque.getName(), false);
        }
    }//GEN-LAST:event_rbChequeActionPerformed

    private void txtDinheiroRecebidoKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtDinheiroRecebidoKeyPressed
        if (evt.getKeyCode() == 10 || evt.getKeyCode() == 13) {
            double troco = 0;
            troco = listaCompras.get(posicaoCompra).getValor_total() - Double.parseDouble(txtDinheiroRecebido.getText());
            if (troco > 0) {
                lblDinheiroTroco.setForeground(Color.red);
                lblDinheiroTroco.setText("Faltam R$" + troco);
            } else if (troco < 0) {
                lblDinheiroTroco.setForeground(new java.awt.Color(102, 204, 0));
                lblDinheiroTroco.setText("R$" + Math.abs(troco));
            } else {
                lblDinheiroTroco.setForeground(Color.black);
                lblDinheiroTroco.setText("R$" + 0);
            }
            lblDinheiroTroco.setVisible(true);
        }
    }//GEN-LAST:event_txtDinheiroRecebidoKeyPressed

    private void btnVerificarCodigoCompraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVerificarCodigoCompraActionPerformed
        posicaoCompra = -1;

        //verificando se existe o numero do pedido
        for (int i = 0; i < listaCompras.size(); i++) {
            if (Integer.parseInt(txtCodigoCompra.getText()) == listaCompras.get(i).getPedido_compra()) {
                posicaoCompra = i;
                break;
            }
        }

        if (posicaoCompra == -1) {
            return;
        }


        notaAtual = new NotaFiscal();
        preencherNotaFiscal();
        pnlNotaFiscal.setEnabled(true);
        pnlNotaFiscal.setVisible(true);
        numeroDeParcelas(listaCompras.get(posicaoCompra).getValor_total());
        preencheTabelaParcelas(lblCartaoCreditoParcelas, listaCompras.get(posicaoCompra).getValor_total(), ler_juros.getJuros()/100);
        preencheTabelaParcelas(lblChequeTabelaParcelas, listaCompras.get(posicaoCompra).getValor_total(), ler_juros.getJuros()/100);
        rbCartaoCredito.setEnabled(true);
        rbCartaoDebito.setEnabled(true);
        rbCheque.setEnabled(true);
        rbDinheiro.setEnabled(true);

        //adicionando número de parcelas nas combo box
        for (int i = 0; i < numeroParcelas[1]; i++) {
            cboxChequeParcelas.addItem((i + 1));
            cboxCartaoCreditoParcelas.addItem((i + 1));
        }
    }//GEN-LAST:event_btnVerificarCodigoCompraActionPerformed

    private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        listaLucro = Arquivo.lerLucro();
        listaCompras = Arquivo.ler_pedidoCompra();
        listaNotaFiscal = Arquivo.lerNotalFiscal();
        listaClientes = Arquivo.lerCliente();
        ler_juros = Arquivo.lerJuros();
        estoque = Arquivo.lerProduto();
    }//GEN-LAST:event_formWindowOpened

    void quantidade_vendas(){



        vendidos prd_vendidos = new vendidos();
        cad_produto ListaProdutos = new cad_produto();

    listaCompras.get(posicaoCompra).getData_de_compra();
    ArrayList<vendidos> listaVendidos = new ArrayList<>();
    String data_produto_compra = listaCompras.get(posicaoCompra).getData_de_compra().get(Calendar.DAY_OF_MONTH) +"/"+
                                       listaCompras.get(posicaoCompra).getData_de_compra().get(Calendar.MONTH) +"/" +
                                       listaCompras.get(posicaoCompra).getData_de_compra().get(Calendar.YEAR);




        for(int j= 0; j < listaCompras.get(posicaoCompra).getLista_compra().size(); j++){

               int posicaoEstoque = busca.indexDoCampo(estoque, listaCompras.get(posicaoCompra).getLista_compra().get(j).getNome_produto(), "getNome");
            if(posicaoEstoque == -1){
                System.out.println("erro");
                return ;
            }



        if(listaCompras.get(posicaoCompra).getLista_compra().get(j).getNome_produto().equalsIgnoreCase(estoque.get(posicaoEstoque).getNome())){

               if(!estoque.get(posicaoEstoque).getVendas().isEmpty()){


                             for(int i = 0 ; i < estoque.get(posicaoEstoque).getVendas().size(); i++){
                                    System.out.println("erro");

                                    String data_produto = estoque.get(posicaoEstoque).getVendas().get(i).getData().get(Calendar.DAY_OF_MONTH)+"/"+
                                   estoque.get(posicaoEstoque).getVendas().get(i).getData().get(Calendar.MONTH)+"/"+
                                   estoque.get(posicaoEstoque).getVendas().get(i).getData().get(Calendar.YEAR);

                                   if(data_produto_compra.equalsIgnoreCase(data_produto)){
                                   System.out.println("entrou");
                                   int contador = estoque.get(posicaoEstoque).getVendas().get(i).getQuantidade_vendidos();
                                    contador++;
                                    estoque.get(posicaoEstoque).getVendas().get(i).setQuantidade_vendidos(contador);
                                   Arquivo.armazenarProduto(estoque);

                                   }
                                   else{
                                       estoque = Arquivo.lerProduto();
                                       prd_vendidos.setData(listaCompras.get(posicaoCompra).getData_de_compra());
                                       prd_vendidos.setQuantidade_vendidos(1);
                                       listaVendidos.add(prd_vendidos);
                                       estoque.get(posicaoEstoque).setVendas(listaVendidos);
                                       Arquivo.armazenarProduto(estoque);
                                   }



                              }

               }
               else{
                   estoque = Arquivo.lerProduto();
                   prd_vendidos.setData(listaCompras.get(posicaoCompra).getData_de_compra());
                   prd_vendidos.setQuantidade_vendidos(1);
                   listaVendidos.add(prd_vendidos);
                   estoque.get(posicaoEstoque).setVendas(listaVendidos);
                   Arquivo.armazenarProduto(estoque);
               }

       }





         }









}

    private void btnFinalizarCompraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFinalizarCompraActionPerformed
        //verificando se foi escolhida alguma forma de pagamento
        if (!(rbCartaoCredito.isSelected()) && !(rbCartaoDebito.isSelected()) && !(rbCheque.isSelected()) && !(rbDinheiro.isSelected())) {
            JOptionPane.showMessageDialog(rootPane, "Selecione alguma forma de pagamento");
            return;
        }

        //verificando se os campos da forma de pagamento escolhido estao preenchidos
        if (rbCartaoCredito.isSelected()) {
            for (Component c : pnlCartaoCredito.getComponents()) {
                if (c instanceof JTextField) {
                    if (((JTextField) c).getText().equals("")) {
                        JOptionPane.showMessageDialog(rootPane, "Existe algum(s) campo(s) vazio(s)");
                        return;
                    }
                }
            }
            notaAtual.setFormaPagmento("Cartão de Crédito");
            notaAtual.setNumero_de_parcelas(cboxCartaoCreditoParcelas.getSelectedIndex() + 1);

            //guardando informações da forma de pagamento
            infoFormaPagmento = new Cartao();
            ((Cartao) infoFormaPagmento).setData_recebimento(calCartaoCreditoData.getCalendar());
            ((Cartao) infoFormaPagmento).setOperadora(txtCarttaoCreditoOperadora.getText());
            notaAtual.setInfoFormaPagamento(infoFormaPagmento);

        }

        if (rbCartaoDebito.isSelected()) {
            for (Component c : pnlCartaoDebito.getComponents()) {
                if (c instanceof JTextField) {
                    if (((JTextField) c).getText().equals("")) {
                        JOptionPane.showMessageDialog(rootPane, "Existe algum(s) campo(s) vazio(s)");
                        return;
                    }
                }
            }
            notaAtual.setFormaPagmento("Cartão de Débito");

            //pegando informações da forma de pagamento
            infoFormaPagmento = new Cartao();
            ((Cartao) infoFormaPagmento).setData_recebimento(calCartaoDebitoDataRecebimento.getCalendar());
            ((Cartao) infoFormaPagmento).setOperadora(txtCartaoDebitoOperadora.getText());
            notaAtual.setInfoFormaPagamento(infoFormaPagmento);

        }

        if (rbDinheiro.isSelected()) {
            for (Component c : pnlDinheiro.getComponents()) {
                if (c instanceof JTextField) {
                    if (((JTextField) c).getText().equals("")) {
                        JOptionPane.showMessageDialog(rootPane, "Existe algum(s) campo(s) vazio(s)");
                        return;
                    }
                }
            }
            notaAtual.setFormaPagmento("Dinheiro");
        }

        if (rbCheque.isSelected()) {
            for (Component c : pnlCheque.getComponents()) {
                if (c instanceof JTextField) {
                    if (((JTextField) c).getText().equals("")) {
                        JOptionPane.showMessageDialog(rootPane, "Existe algum(s) campo(s) vazio(s)");
                        return;
                    }
                }
            }
            notaAtual.setFormaPagmento("Cheque");
            notaAtual.setNumero_de_parcelas(cboxCartaoCreditoParcelas.getSelectedIndex() + 1);

            //pegando dados da forma de pagamento
            infoFormaPagmento = new Cheque();
            ((Cheque) infoFormaPagmento).setData_de_deposito(calChequeDataDeposito.getCalendar());
            ((Cheque) infoFormaPagmento).setCmc7(txtChequeCMC7.getText());
            ((Cheque) infoFormaPagmento).setCpf(listaClientes.get(busca.indexDoCampo(listaClientes, listaCompras.get(posicaoCompra).getNome_cliente(), "getNome")).getCpf());
            notaAtual.setInfoFormaPagamento(infoFormaPagmento);

        }

        notaAtual.setValor_toatal(listaCompras.get(posicaoCompra).getValor_total());

        if (!listaNotaFiscal.isEmpty()) {
            notaAtual.setNumero_da_nota(listaNotaFiscal.size()+1);
        }

        if(notaAtual.getNumero_de_parcelas()>numeroParcelas[0]){
            notaAtual.setValor_parcela(calcValorParcela(notaAtual.getValor_toatal(), ler_juros.getJuros()/100, notaAtual.getNumero_de_parcelas(), true));
        }else{
            notaAtual.setValor_parcela(calcValorParcela(notaAtual.getValor_toatal(), ler_juros.getJuros()/100, notaAtual.getNumero_de_parcelas(), false));
        }

        notaAtual.setNotaHTML(lblClienteInfo.getText());
        notaAtual.setCompra(listaCompras.get(posicaoCompra));

        int pos = acharData();
        if(pos == -1){
            lucro lucroAtual = new lucro();
            lucroAtual.setData(listaCompras.get(posicaoCompra).getData_de_compra());
            lucroAtual.setPreco_bruto(precoCusto());
            lucroAtual.setPreco_vendido(listaCompras.get(posicaoCompra).getValor_total());
            lucroAtual.setLucro(lucroAtual.getPreco_vendido() - lucroAtual.getPreco_bruto());
            listaLucro.add(lucroAtual);
        }else{
            listaLucro.get(pos).setPreco_bruto(listaLucro.get(pos).getPreco_bruto() + precoCusto());
            listaLucro.get(pos).setPreco_vendido(listaLucro.get(pos).getPreco_vendido()+listaCompras.get(posicaoCompra).getValor_total());
            listaLucro.get(pos).setLucro(listaLucro.get(pos).getPreco_vendido() - listaLucro.get(pos).getPreco_bruto());
        }

        quantidade_vendas();

        Arquivo.armazenarLucro(listaLucro);

        //atualizando estoque apos a venda
        atualizarEstoque();
        Arquivo.armazenarProduto(estoque);

        //salvando compra na lista de compras do cliente
        listaClientes.get(busca.indexDoCampo(listaClientes, listaCompras.get(posicaoCompra).getNome_cliente(), "getNome")).getListaCompras().add(listaCompras.get(posicaoCompra));
        Arquivo.armazenarCliente(listaClientes);


        //adicionando nota fiscal atual a lista de notas e salvando no arquivo
        listaNotaFiscal.add(notaAtual);
        Arquivo.armazenarNotaFisical(listaNotaFiscal);

        //removendo a compra da lista de compras abertas e salvando no arquivo
        listaCompras.remove(posicaoCompra);
        Arquivo.amarzenarPedidoCompra(listaCompras);

        JOptionPane.showMessageDialog(rootPane, "Venda realizada com sucesso");
    }//GEN-LAST:event_btnFinalizarCompraActionPerformed

    private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
        // TODO add your handling code here:

        p.setEnabled(true);

        Thread t = new Thread(p);

        t.start();
    }//GEN-LAST:event_formWindowClosed

    /*Metodo para preencher nota fiscal
     * A nota fiscal será incluida na variavel  lblClienteInfo
     * A variavle lblClienteInfo é do tipo JLabel
     * Será preenchida com codigo HTML e variaveis vindas da Compra
     */
    public void preencherNotaFiscal() {
        int numNota = 1;
        String aux = "";
        double descontoTotal = 0;

        //pegando número da nota fiscal
        if (!listaNotaFiscal.isEmpty()) {
            numNota = listaNotaFiscal.size();
            numNota++;
        }



        //pegando desconto total da venda
        for (int i = 0; i < listaCompras.get(posicaoCompra).getLista_compra().size(); i++) {
            descontoTotal = descontoTotal + listaCompras.get(posicaoCompra).getLista_compra().get(i).getDesconto();
        }


        //iniciando código html
        lblClienteInfo.setText("<html><head><tittle></tittle></head><body style=\"background-color:white;\">");

        //Criando tabela e preenchendo com dados da compra
        aux = lblClienteInfo.getText();
        lblClienteInfo.setText(aux
                + "<p style=\"font-size:20px;\">Nota Fiscal Lojas AIAM</p>"
                + "<h2>Data: " + dataString + "</h2>"
                + "<table border=1px style=\"font-size:10px;\">"
                + "<tr style=\"background-color:black;color:white;\">"
                + "<th>Nº Nota Fiscal</th>"
                + "<th>Cliente</th>"
                + "<th>Valor do Desconto</th>"
                + "<th>Valor Total</th>"
                + "</tr>"
                + "<tr>"
                + "<td width=\"100px\" align=center>" + numNota + "</td>"
                + "<td width=\"250px\" align=center>" + listaCompras.get(posicaoCompra).getNome_cliente() + "</td>"
                + "<td width=\"100px\" align=center>" + descontoTotal + "</td>"
                + "<td width=\"100px\" align=center>" + listaCompras.get(posicaoCompra).getValor_total() + "</td>"
                + "</tr>"
                + "</table>");

        //Criando tabela dos produtos presentes na compra
        aux = lblClienteInfo.getText();
        lblClienteInfo.setText(aux
                + "<h2>Produtos<br></h2>"
                + "<table border=1px style=\"font-size:10px;\">"
                + "<tr style=\"background-color:black;color:white;\">"
                + "<th>Nome</th>"
                + "<th>Valor Unitário</th>"
                + "<th>Valor Total</th>"
                + "</tr>");
        aux = lblClienteInfo.getText();
        for (int i = 0; i < listaCompras.get(posicaoCompra).getLista_compra().size(); i++) {
            lblClienteInfo.setText(aux + "<tr>"
                    + "<td width=\"300px\" align=center>" + listaCompras.get(posicaoCompra).getLista_compra().get(i).getNome_produto() + "</td>");
            aux = lblClienteInfo.getText();
            lblClienteInfo.setText(aux
                    + "<td width=\"100px\" align=center>" + listaCompras.get(posicaoCompra).getLista_compra().get(i).getValor_unitario() + "</td>");
            aux = lblClienteInfo.getText();
            lblClienteInfo.setText(aux
                    + "<td width=\"100px\" align=center>" + listaCompras.get(posicaoCompra).getLista_compra().get(i).getSubtotal() + "</td></tr>");
            aux = lblClienteInfo.getText();
        }


        //fechando codigo html
        lblClienteInfo.setText(aux + "</body></html>");
    }

    /*Metodo que preenche tabela com parcelas
     * Recebi um label como parametro onde as parcelas serão preenchidas
     * O código é feito em HTML
     */
    public void preencheTabelaParcelas(JLabel tabela, double valor, double juros) {
        String aux = "";
        DecimalFormat decimal = new DecimalFormat("0.00");



        //criando a tabela
        tabela.setText("<html><head><tittle></tittle></head><body style=\"background-color:white;\">");
        aux = tabela.getText();
        tabela.setText(aux + "<table><tr style=\"background-color:black;color:white;\"><th width=\"200px\">"
                + "Parcelas sem Juros"
                + "<!--Criando outra tabela dentro da coluna parcelas sem juros contendo o valor e a quantidade--!>"
                + "<div style=\"background-color:white;\"><table><tr style=\"background-color:black;color:white;\">"
                + "<th>Valor</th>"
                + "<th>Nº Parcelas</th></tr>"
                + "");

        //adicionando valor e quantidade de parcelas sem jutos
        aux = tabela.getText();
        for (int i = 0; i < numeroParcelas[0]; i++) {
            tabela.setText(aux + "<tr><td width=\"120px\" align=center style=\"color:black;\">" + decimal.format(calcValorParcela(valor, juros, i + 1, false)) + "</td>");
            aux = tabela.getText();
            tabela.setText(aux + "<td width=\"80px\" align=center style=\"color:black;\">" + (i + 1) + "x</td></tr>");
            aux = tabela.getText();
        }

        //terminando tabela de parcelas sem jutos
        tabela.setText(aux + "</table></div></th></tr><tr style=\"background-color:black;color:white;\"><th width=\"200px\">"
                + "Parcelas com Juros"
                + "<!--Criando outra tabela dentro da coluna parcelas com juros contendo o valor e a quantidade--!>"
                + "<div style=\"background-color:white;\"><table><tr style=\"background-color:black;color:white;\">"
                + "<th>Valor</th>"
                + "<th>Nº Parcelas</th></tr>");
        aux = tabela.getText();

        //colocando as parcelas com juros
        for (int i = numeroParcelas[0]; i < numeroParcelas[1]; i++) {
            tabela.setText(aux + "<tr><td width=\"120px\" align=center style=\"color:black;\">" + decimal.format(calcValorParcela(valor, juros, i + 1, true)) + "</td>");
            aux = tabela.getText();
            tabela.setText(aux + "<td width=\"80px\" align=center style=\"color:black;\">" + (i + 1) + "x</td></tr>");
            aux = tabela.getText();
        }

        //terminando tabelas e html
        tabela.setText(aux + "</table></div></th></tr></tabela></body></html>");


    }

    //metodos de reset de opcoes
    public void resetPainel(String nome, boolean mostra) {
        for (Component c : pnlPrincipal.getComponents()) {
            if (c instanceof JPanel) {
                //tirando o isentando o titulo desta acao
                if (c.equals(pnlTitulo)) {
                    continue;
                }

                ((JPanel) c).setEnabled(false);
                ((JPanel) c).setVisible(false);
                ((JPanel) c).setBounds(0, 0, 0, 0);
                if (c.getName().equalsIgnoreCase(nome)) {
                    if (mostra == true) {
                        ((JPanel) c).setBounds(34, 414, 940, 260);
                        ((JPanel) c).setEnabled(true);
                        ((JPanel) c).setVisible(true);
                    }
                }
            }
        }
    }

    public void resetBotaoRadio(String nome) {
        for (Component c : pnlPrincipal.getComponents()) {
            if (c instanceof JRadioButton) {
                if (!c.getName().equalsIgnoreCase(nome)) {
                    ((JRadioButton) c).setSelected(false);
                }
            }
        }
    }

    public double calcValorParcela(double valor, double juros, int vezes, boolean comJuros) {
        if (!comJuros) {
            return (valor / vezes);
        } else {
            return (((valor * juros) + valor) / vezes);
        }
    }

    public void numeroDeParcelas(double valor) {
        //determinando numero de parcelas com juros e sem juros
        if (valor <= 100) {
            numeroParcelas[0] = 1;
            numeroParcelas[1] = 3;
        } else if (valor <= 500) {
            numeroParcelas[0] = 3;
            numeroParcelas[1] = 6;
        } else if (valor <= 1000) {
            numeroParcelas[0] = 8;
            numeroParcelas[1] = 10;
        } else {
            numeroParcelas[0] = 10;
            numeroParcelas[1] = 15;
        }

    }

    //metodo para atualizar o estoque após finalizar venda
    public void atualizarEstoque(){
        for (int i = 0; i < listaCompras.get(posicaoCompra).getLista_compra().size(); i++) {
            //procurando o produto no estoque para ser atualizado
            int posicaoEstoque = busca.indexDoCampo(estoque, listaCompras.get(posicaoCompra).getLista_compra().get(i).getNome_produto(), "getNome");
            if(posicaoEstoque == -1){
                System.out.println("erro");
                return ;
            }
            if((estoque.get(posicaoEstoque).getQuantidade() - listaCompras.get(posicaoCompra).getLista_compra().get(i).getQuantidade()) < 0){
                JOptionPane.showMessageDialog(rootPane, "A quantidade requerida do produto " + listaCompras.get(posicaoCompra).getLista_compra().get(i).getNome_produto() + " esta em fauta no estoque");
                return ;
            }
            estoque.get(posicaoEstoque).setQunatidade(estoque.get(posicaoEstoque).getQuantidade() - listaCompras.get(posicaoCompra).getLista_compra().get(i).getQuantidade());
        }
    }

    public int acharData(){
        for (int i = 0; i < listaLucro.size(); i++) {
            if(listaCompras.get(posicaoCompra).getData_de_compra().get(Calendar.DAY_OF_MONTH) == listaLucro.get(i).getData().get(Calendar.DAY_OF_MONTH) &&
                    listaCompras.get(posicaoCompra).getData_de_compra().get(Calendar.MONTH) == listaLucro.get(i).getData().get(Calendar.MONTH) &&
                    listaCompras.get(posicaoCompra).getData_de_compra().get(Calendar.YEAR) == listaLucro.get(i).getData().get(Calendar.YEAR)){
             return i;
            }
        }
        return -1;
    }

    public double precoCusto(){
        double valorCusto = 0;
        for (int i = 0; i < listaCompras.get(posicaoCompra).getLista_compra().size(); i++) {
            valorCusto += estoque.get(busca.indexDoCampo(estoque, listaCompras.get(posicaoCompra).getLista_compra().get(i).getNome_produto(), "getNome")).getPre_compra()*listaCompras.get(posicaoCompra).getLista_compra().get(i).getQuantidade();
        }
        return valorCusto;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(caixa.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(caixa.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(caixa.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(caixa.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new caixa().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnFinalizarCompra;
    private javax.swing.JButton btnVerificarCodigoCompra;
    private com.toedter.calendar.JDateChooser calCartaoCreditoData;
    private com.toedter.calendar.JDateChooser calCartaoDebitoDataRecebimento;
    private com.toedter.calendar.JDateChooser calChequeDataDeposito;
    private javax.swing.JComboBox cboxCartaoCreditoParcelas;
    private javax.swing.JComboBox cboxChequeParcelas;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblCartaoCreditoParcelas;
    private javax.swing.JLabel lblChequeTabelaParcelas;
    private javax.swing.JLabel lblClienteInfo;
    private javax.swing.JLabel lblDinheiroTroco;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JPanel pnlCartaoCredito;
    private javax.swing.JPanel pnlCartaoDebito;
    private javax.swing.JPanel pnlCheque;
    private javax.swing.JScrollPane pnlChequeParcelas;
    private javax.swing.JPanel pnlDinheiro;
    private javax.swing.JScrollPane pnlNotaFiscal;
    private javax.swing.JPanel pnlPrincipal;
    private javax.swing.JPanel pnlTitulo;
    private javax.swing.JRadioButton rbCartaoCredito;
    private javax.swing.JRadioButton rbCartaoDebito;
    private javax.swing.JRadioButton rbCheque;
    private javax.swing.JRadioButton rbDinheiro;
    private javax.swing.JTextField txtCartaoDebitoOperadora;
    private javax.swing.JTextField txtCartaoDebitoValor;
    private javax.swing.JTextField txtCarttaoCreditoOperadora;
    private javax.swing.JTextField txtCequeValor;
    private javax.swing.JTextField txtChequeCMC7;
    private javax.swing.JTextField txtCodigoCompra;
    private javax.swing.JTextField txtDinheiroRecebido;
    // End of variables declaration//GEN-END:variables
}
